1. Field of the Invention
The present invention relates to a computer program product, system and method for determining and assigning a default value to a current server response if the current server response is not received from the server within a time-limit.
2. Description of the Related Art
Distributed applications are commonplace in modern data-processing systems, especially in the Internet. In a distributed application, a server computer (or simply server) offers a service that may be exploited by a large number of users accessing the server by means of their client computers (or simply clients)—in general remotely through a communication network. In this way, it is possible to partition the distributed application into a processing layer (on its server-side) and a presentation layer (on its client-side). This allows concentrating the processing operations in the server, which shares its resources with all the clients (with a consequent simplification of a management of the distributed application and of the clients). A typical example of distributed application is the access to a web site in the Internet. In this case, the user of each client exploits a web browser (or simply browser) to download desired web pages of the web site. The user may then interact with the web pages for entering data, submitting commands and displaying information.
The interaction with the distributed application involves the submission of a series of user requests on the client (through the web browser, or any other user interface), which are then transmitted to the server. The server processes the user requests and returns corresponding server responses to the client. Generally, after the submission of each user request, the user has to wait until the corresponding server response is returned from the server before continuing the interaction with the distributed application.
A problem of the distributed applications is that the server responses may be received on the client with a relatively long delay from the submission of the corresponding user requests in critical operative conditions. A cause of this delay may be a stress condition of the server, because of either technical issues (i.e., limited resources or malfunctioning) or scalability issues (i.e., high number of clients accessing it). The result is that the server cannot serve the user requests promptly. Another cause of this delay may be limited bandwidth of the communication network, because of either technical issues (i.e., limited infrastructures or broken lines) or scalability issues (i.e., high traffic), which results in the transmission of information between the clients and the server slowing down.
In critical operative conditions the user may have to wait a relatively long time without doing anything. This waiting time may be far longer than expected for a normal service level in standard operative conditions (for example, several tens of seconds against a fraction of seconds). Such delays may annoy the user and degrade the responsiveness and performance of the distributed application.
The above-mentioned problem is generally addressed by increasing the resources of the server and the infrastructures of the communication network, and their redundancy. However, this solution involves high costs and may be impractical in specific situations.
Another solution is to apply caching techniques to the server responses.
Particularly, the caching techniques may be implemented in proxy computers, or simply proxies (close to the clients, between them and the server) and the server responses are saved onto the proxies, so as to be retrieved from them at next submissions of the corresponding user requests (instead of going up to the server again). An example of these caching techniques is described in JP-A-2004078756 (the entire disclosure of which is herein incorporated by reference).
Alternatively, it is also possible to apply the caching techniques in the client (for example, in its web browser) so that the server responses are saved locally onto a cache memory of the client for retrieval for next submissions of the corresponding user requests (without the need of transmitting them to the server). Examples of these caching techniques are described in US-A-2010/0138485, US-A-2009/0094377 and “Caching in HTTP—http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html” (the entire disclosures of which are herein incorporated by reference). U.S. Pat. No. 7,096,418 (the entire disclosure of which is herein incorporated by reference) describes invalidating server responses in the cache memory of the client when they not up-to-date any longer (so to avoid providing wrong information to the user).
Additionally, as described in U.S. Patent Publication No. 2009/0049243 (the entire disclosure of which is herein incorporated by reference), it is also possible to transmit information about objects relating to the server response that are cached on the client to the server, together with the corresponding user request. In this way, the server response that is returned to the client only comprises a delta with respect to these objects (already available on the client), so as to reduce the amount of information that is transmitted over the communication network. However, the same drawbacks mentioned above are still experienced when this (reduced) server response is late.